package cn.com.acca.ma.dao;

import cn.com.acca.ma.model.StockIndexMonth;
import cn.com.acca.ma.model.StockMonth;

import java.util.Date;
import java.util.List;

public interface StockIndexMonthDao extends BaseDao {

    /**************************************************************************************************
     *
     * 									       更新月线级别，所有月份的指数数据
     *
     **************************************************************************************************/
    /**
     * 计算月线级别，所有指数的基础数据
     */
    void writeStockIndexMonth();

    /**
     * 计算月线级别，所有指数的移动平均线
     */
    void writeStockIndexMonthMA();

    /**
     * 计算月线级别，所有指数的KD
     */
    void writeStockIndexMonthKD();

    /**
     * 计算月线级别，所有指数的MACD
     */
    void writeStockIndexMonthMACD();

    /**************************************************************************************************
     *
     * 									       更新月线级别，某一月的指数数据
     *
     **************************************************************************************************/
    /**
     * 根据开始时间和结束时间，计算某一个月的所有指数的基础数据
     * @param beginDate
     * @param endDate
     */
    void writeStockIndexMonthByDate(String beginDate, String endDate);

    /**
     * 根据每个月的开始时间和结束时间，计算某一个月的所有指数的移动平均线
     * @param currentMonthBeginDate
     * @param currentMonthEndDate
     */
    void writeStockIndexMonthMAByDate(String currentMonthBeginDate, String currentMonthEndDate);

    /**
     * 根据开始时间和结束时间，计算某一个月的所有指数的kd
     * @param beginDate
     * @param endDate
     */
    void writeStockIndexMonthKDByDate(String beginDate, String endDate);

    /**
     * 根据开始时间和结束时间，计算某一个月的所有指数的MACD
     * @param beginDate
     * @param endDate
     */
    void writeStockIndexMonthMACDByDate(String beginDate, String endDate);

    /**
     * 根据开始时间beginDate和结束时间endDate，从表STOCK_INDEX_MONTH中获取END_DATE字段
     * @param beginDate
     * @param endDate
     * @return
     */
    List<Date> getDateByCondition(String beginDate, String endDate);

    /**
     * 从表STOCK_INDEX_MONTH中获取date日的所有StockIndexMonth对象
     * @param date
     * @return
     */
    List<StockIndexMonth> getStockIndexMonthByDate(String date);

    /**
     * 插入StockIndexMonth对象
     * @param stockIndexMonth
     */
    void saveStockIndexMonth(StockIndexMonth stockIndexMonth);
}
